package com.tarena.lbs.user.pojo.po;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;

import java.io.Serializable;
import java.util.Date;

@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
@TableName("lbs_user")// 使用MyBatis-Plus的表名注解
public class UserPO implements Serializable {
    /**
     * 用户ID
     *
     * 数据库表中的主键，自动递增
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 用户手机号
     *
     * 用户的联系电话号码，用于注册和登录
     */
    @TableField("phone")
    private String phone;

    /**
     * 用户名
     *
     * 用户注册时选择的名字，用于显示和识别用户
     */
    @TableField("user_name")
    private String userName;

    /**
     * 用户密码
     *
     * 用户登录密码，用于验证用户身份
     */
    @TableField("password")
    private String password;

    /**
     * 用户昵称
     *
     * 用户设置的昵称，用于在社区等公开场合显示
     */
    @TableField("nick_name")
    private String nickName;

    /**
     * 用户注册时的IP地址
     *
     * 记录用户注册时的网络位置，用于安全和统计分析
     */
    @TableField("ip_address")
    private String ipAddress;

    /**
     * 用户注册时间
     *
     * 自动记录用户注册的时间，仅在插入新记录时填充
     */
    @TableField(value = "reg_time", fill = FieldFill.INSERT)
    private Date regTime;

    /**
     * 用户最后一次登录时间
     *
     * 自动更新用户最后一次登录的时间，每次更新记录时填充
     */
    @TableField(value = "last_log_time", fill = FieldFill.UPDATE)
    private Date lastLogTime;

    /**
     * 用户个人简介
     *
     * 用户对自己的描述，用于展示个性和特点
     */
    @TableField("introduction")
    private String introduction;

    /**
     * 用户账户提供者类型
     *
     * 标识用户账户的来源或类型，例如普通注册、社交媒体关联等
     */
    @TableField("provider_type")
    private Integer providerType;

    /**
     * 用户账户状态
     *
     * 标识用户账户的状态，如激活、冻结等
     */
    @TableField("status")
    private Integer status;

    /**
     * 用户的Union ID
     *
     * 在多应用系统中唯一标识用户的ID，实现跨应用识别同一用户
     */
    @TableField("union_id")
    private String unionId;

    /**
     * 用户头像地址
     *
     * 存储用户头像的URL地址，用于展示用户形象
     */
    @TableField("user_image")
    private String userImage;
}
